package grape.sequence.service.generator.api;

import grape.sequence.service.generator.param.SequenceConfigParam;

/**
 * 序列生成器接口
 * Created by yangwei
 * Created at 2020/8/20 18:41
 */
public interface ISequenceGenerator {

    /**
     * 序列的下一个值
     * @param configCode 配置的编码 必填
     * @return 返回下一个值
     */
    String nextSeqValueByConfigCode(String configCode);

    /**
     * 序列的下一个值
     * @param configId 配置的id 必填
     * @return 返回下一个值
     */
    String nextSeqValueByConfigId(String configId);

    /**
     * 根据配置id查看当前值
     * @param configId
     * @return  null=尚未获取过值，否则为当前的值
     */
    String currentSeqValueByConfigId(String configId);

    /**
     * 自由获取下一个值，周期自己定义，默认初始值 和步长都为1
     * @param suffix 必填，如果按日期生成可以值20200820
     * @return
     */
    String nextSeqValueDefault(String suffix);

    /**
     * 自由获取下一个值
     * @param suffix
     * @param param 配置信息
     * @return
     */
    String nextSeqValueFree(String suffix, SequenceConfigParam param);

    /**
     * 自由获取预设序列时，可根据该方法查询当前值
     * @param suffix
     * @return null=尚未获取过值，否则为当前的值
     */
    String currentSeqValueFree(String suffix, SequenceConfigParam param);
}
